package com.hll.api.controller;

import com.hll.api.config.web.RespMessage;
import com.hll.api.util.HttpUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * 网络收集api
 *
 * @author 何龙
 * @date 2019-06-04 16:07
 */
@RestController
@RequestMapping("/api/network")
public class NetworkApi {


    /**
     * @api {get} /api/network/get/ip 获取当前用户ip
     * @apiVersion 1.0.0
     * @apiName ip
     * @apiGroup network
     * @apiSuccess {Number} status 状态码,0为接口访问成功
     * @apiSuccess {String} err 错误信息
     * @apiSuccess {Object} datas 状态码为0时返回ip地址
     * @apiSuccessExample {json} 成功示例：
     * {
     * "status": 0,
     * "err": null,
     * "datas": "1.80.149.163"
     * }
     */
    @GetMapping("/get/ip")
    public RespMessage getIp(HttpServletRequest request) {
        return RespMessage.success( HttpUtils.getClientIp( request ), null );
    }


    /**
     * @api {get} /api/network/qrcode 生成二维码
     * @apiVersion 1.0.0
     * @apiName qrcode
     * @apiGroup network
     * @apiParam {String} text 二维码文本内容
     * @apiParam {String} [bg] 背景颜色<br/>
     * bg=颜色代码，例如：bg=ffffff
     * @apiParam {String} [fg] 前景颜色<br/>
     * fg=颜色代码，例如：fg=cc0000
     * @apiParam {String} [el] 纠错等级
     * 可选值 h/q/l/m 例：el=h
     * @apiParam {String} [pt] 定位点颜色（外框）<br/>
     * pt=颜色代码，例如：pt=00ff00
     * @apiParam {String} [inpt] 定位点颜色（内点）<br/>
     * inpt=颜色代码，例如：inpt=000000
     * @apiParam {String} [logo] logo图片<br/>
     * logo=图片地址，例如：logo=http://www.liantu.com/images/2013/sample.jpg
     * @apiParam {Integer} [w] 尺寸大小<br/>
     * w=数值（像素），例如：w=300
     * @apiParam {Integer} [m] 静区（外边距）<br/>
     * m=数值（像素），例如：m=30
     * @apiParamExample {string} 请求示例:
     * text=你好
     * @apiSuccess {Number} status 状态码,0为接口访问成功
     * @apiSuccess {String} err 错误信息
     * @apiSuccess {Object} datas 状态码为0时返回二维码链接
     * @apiSuccessExample {json} 成功示例：
     * {
     * "status": 0,
     * "err": null,
     * "datas": "http://qr.liantu.com/api.php?text=你好"
     * }
     */
    @GetMapping("/qrcode")
    public RespMessage qrCode(String text, String bg, String fg, String gc, String el, Integer w, Integer m, String pt, String inpt, String logo) {
        if (text == null) {
            return RespMessage.error( "text不能为空" );
        }
        StringBuffer sb = new StringBuffer( "http://qr.liantu.com/api.php" );
        sb.append( "?text=" ).append( text );
        buidParam( sb, "bg", bg );
        buidParam( sb, "fg", fg );
        buidParam( sb, "gc", gc );
        buidParam( sb, "el", el );
        buidParam( sb, "w", w );
        buidParam( sb, "m", m );
        buidParam( sb, "pt", pt );
        buidParam( sb, "inpt", inpt );
        buidParam( sb, "logo", logo );
        return RespMessage.success( sb.toString(), null );
    }


    private void buidParam(StringBuffer sb, String name, Object value) {
        if (value != null) {
            sb.append( "&" ).append( name ).append( "=" ).append( value );
        }
    }

}
